package com.cci.kangdao.ecjv.service.impl;

import com.cci.kangdao.aop.UserThreadLocal;
import com.cci.kangdao.dao.DictionariesTDao;
import com.cci.kangdao.dao.ECJVFaultCodeTMapper;
import com.cci.kangdao.dao.model.UserT;
import com.cci.kangdao.ecjv.dto.ECJVFaultCodeDto;
import com.cci.kangdao.ecjv.dto.ECJVModelDto;
import com.cci.kangdao.ecjv.dto.ECJVModelPdfDto;
import com.cci.kangdao.ecjv.model.ECJVQueryHistoryT;
import com.cci.kangdao.ecjv.service.ECJVFaultCodeService;
import com.cci.kangdao.utilTool.CollectionUtils;
import com.cci.kangdao.utilTool.LocalTimeUtil;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * @description: 故障码信息
 * @author: 商伟
 * @company: CTY
 * @since: 2022/10/24 13:56
 * @version: V1.0
 **/
@Service
public class ECJVFaultCodeServiceImpl implements ECJVFaultCodeService {
    private Logger log = Logger.getLogger(this.getClass().getName());

    @Resource
    private ECJVFaultCodeTMapper ecjvFaultCodeTMapper;

    @Resource
    private DictionariesTDao dictionariesTDao;

    /**
     * 根据故障码或spn，fmi 获取故障码信息
     * @param ecjvFaultCodeDto
     * @return
     */
    @Override
    public ECJVFaultCodeDto getOneByFaultCode(ECJVFaultCodeDto ecjvFaultCodeDto) {
        ECJVFaultCodeDto dto = ecjvFaultCodeTMapper.getOneByFaultCode(ecjvFaultCodeDto);
        if(null != dto){
            //查询机型
            List<Map<String, Object>> modelDictList = dictionariesTDao.getDictionariesListByDTableName("ecjvEngineType");
            List<ECJVModelDto> modelList = new ArrayList<>();
            for(Map<String, Object> model : modelDictList){
                List<ECJVModelPdfDto> pdfList = ecjvFaultCodeTMapper.getPdfByModel(Integer.valueOf(model.get("DInt").toString()), dto.getFaultCode());
                if(CollectionUtils.isNotEmpty(pdfList)){
                    ECJVModelDto ecjvModelDto = new ECJVModelDto();
                    ecjvModelDto.setModelName(model.get("DValue").toString());
                    ecjvModelDto.setPdfList(pdfList);
                    modelList.add(ecjvModelDto);
                }
            }
            dto.setModelList(modelList);
        }
        return dto;
    }

    /**
     * 添加查询历史记录
     * @param content 内容
     * @return
     */
    @Override
    public boolean insertQueryHistory(String content) {
        UserT userT = UserThreadLocal.get();
        int count = ecjvFaultCodeTMapper.getCountByUserId(userT.getId(),content);
        int i = 0;
        if(count <= 0){
            ECJVQueryHistoryT queryHistoryT = new ECJVQueryHistoryT();
            queryHistoryT.setContent(content);
            queryHistoryT.setUserId(userT.getId());
            queryHistoryT.setFlag(0);
            queryHistoryT.setCreator(userT.getId());
            queryHistoryT.setCreateTime(LocalTimeUtil.getRealCurrentTime());
            i = ecjvFaultCodeTMapper.insertQueryHistory(queryHistoryT);
        }
        return true;
    }

    /**
     * 查询历史记录 前十条
     * @return
     */
    @Override
    public List<String> getListByUserId() {
        UserT userT = UserThreadLocal.get();
        return ecjvFaultCodeTMapper.getListByUserId(userT.getId());
    }

}
